#include<stdio.h>
#include<unistd.h>
#include<assert.h>

int g_value=100;
int main()
{
  //为什么if else语句都执行了？
  //因为fork在返回的时候，父子进程都已经出现了，return两次
  //id就是pid_t类型定义的变量，返回的本质就是写入
  //谁先返回，谁就先让操作系统发生写时拷贝
  pid_t id =fork();
  assert(id>=0);
  if(id==0)
  {
      while(1)
      {
        printf("我是子进程 我的id是:%d,我的父进程是:%d,g_value:%d,&g_value=%p\n",\
            getpid(),getppid(),g_value,&g_value);
        sleep(1);
        g_value++;
      }
  }
  else
  {
      while(1)
      {
        printf("我是父进程 我的id是:%d,我的父进程是:%d,g_value:%d,&g_value=%p\n",\
            getpid(),getppid(),g_value,&g_value);
        sleep(2);
      }
  }
}

